Balázs Meskó [Tue, 20 Dec 2016 15:14:01 +0000 (15:14 +0000)]
Update Hungarian translation
Balázs Meskó [Tue, 20 Dec 2016 15:13:33 +0000 (15:13 +0000)]
Update Hungarian translation
Daniel Mustieles [Tue, 20 Dec 2016 11:32:30 +0000 (11:32 +0000)]
Update Spanish translation
Daniel Mustieles [Tue, 20 Dec 2016 11:31:59 +0000 (11:31 +0000)]
Update Spanish translation
Chun-wei Fan [Tue, 20 Dec 2016 06:39:39 +0000 (14:39 +0800)]
build/Makefile.msvcproj: Fix cleanup
When we generate the Visual Studio 2013 projects, we need to remove the
*.vs12.sourcefiles and *.vs12.sourcefile.filters that are generated during
the process, so that 'make distcheck' won't complain about leftover files.
Debarshi Ray [Fri, 16 Dec 2016 23:30:39 +0000 (00:30 +0100)]
flowbox: Export gtk_flow_box_get_child_at_pos as public API
https://bugzilla.gnome.org/show_bug.cgi?id=776187
Debarshi Ray [Mon, 12 Dec 2016 20:04:05 +0000 (21:04 +0100)]
GtkStack: Remove redundant code
Commit
7ce96cb6ac28eeb62e003dcb9e0a8ce7d48e09e0 avoids notifications
during destruction by using gtk_widget_in_destruction. Therefore this
code is no longer needed.
This reverts commit
39e7afecb1ee882232e887e1b3e4c30ae0afe3a3
https://bugzilla.gnome.org/show_bug.cgi?id=749012
Philip Chimento [Thu, 15 Dec 2016 22:09:49 +0000 (14:09 -0800)]
GtkApplication: Lack of optional components shouldn't warn
When running uninstalled tests with GtkApplication on an autobuilder with
a fake session bus, warnings will cause the tests to abort. The GNOME
session manager, the Xfce session manager, and the Inhibit portal are all
not needed for normal operation of GTK, so we should not log warnings if
they are not found.
As well as not being present on a fake session bus, it's also not
expected that they'll be present on all platforms.
https://bugzilla.gnome.org/show_bug.cgi?id=774784
Piotr Drąg [Mon, 3 Oct 2016 16:20:03 +0000 (18:20 +0200)]
Use Unicode in translatable strings
See https://developer.gnome.org/hig/stable/typography.html
https://bugzilla.gnome.org/show_bug.cgi?id=772371
Debarshi Ray [Mon, 12 Dec 2016 20:12:51 +0000 (21:12 +0100)]
flowbox: Don't emit selected-children-changed during destruction
https://bugzilla.gnome.org/show_bug.cgi?id=776012
Debarshi Ray [Sun, 18 Dec 2016 08:43:38 +0000 (09:43 +0100)]
listbox: Don't emit selected-rows-changed, etc. during destruction
https://bugzilla.gnome.org/show_bug.cgi?id=776012
Debarshi Ray [Fri, 16 Dec 2016 22:40:21 +0000 (23:40 +0100)]
flowbox: Rename gtk_flow_box_find_child_at_pos for consistency
... with gtk_list_box_get_row_at_y. It would be nice to avoid the
'find' versus 'get' discrepancy since we are planning to expose it as
public API.
https://bugzilla.gnome.org/show_bug.cgi?id=776187
Chun-wei Fan [Mon, 19 Dec 2016 09:09:49 +0000 (17:09 +0800)]
GDK/Win32: Fix Windows backend after GdkWindow simplification
Fix the build after the branch wip/alexl/simplify-gdkwindow was merged, as
there are some changes that broke things in the Windows backend, namely:
-gdk_win32_input_shape_combine_region() should not be removed at this
point (though it is a stub--otherwise GDK/Win32 will crash)
-Some more code need to be removed due to the removal of items in the
above-mentioned merged branch
Also, like the X11 backend, do not allow the creation of native child
windows, and stop checking for subsequent child windows
(GDK_WINDOW_CHILD), so that we can clean things up a bit.
https://bugzilla.gnome.org/show_bug.cgi?id=773299
Marek Černocký [Mon, 19 Dec 2016 09:23:54 +0000 (10:23 +0100)]
Updated Czech translation
Benjamin Otte [Tue, 13 Dec 2016 14:14:49 +0000 (15:14 +0100)]
scrolledwindow: Implement snapshot()
Benjamin Otte [Tue, 13 Dec 2016 15:39:38 +0000 (16:39 +0100)]
scrolledwindow: Fix rendering
We used to allocate the gadget relative to the view window. We allocate
relative to widget->window now.
Benjamin Otte [Wed, 14 Dec 2016 04:25:00 +0000 (05:25 +0100)]
notebook: Implement snapshot
Benjamin Otte [Thu, 15 Dec 2016 04:58:22 +0000 (05:58 +0100)]
iconhelper: Implement snapshot
Benjamin Otte [Thu, 15 Dec 2016 05:22:06 +0000 (06:22 +0100)]
progressbar: Implement snapshot()
Benjamin Otte [Thu, 15 Dec 2016 09:24:20 +0000 (10:24 +0100)]
toolbar: Implement snapshot()
Benjamin Otte [Thu, 15 Dec 2016 09:45:21 +0000 (10:45 +0100)]
eventbox: Implement snapshot()
Benjamin Otte [Thu, 15 Dec 2016 09:49:08 +0000 (10:49 +0100)]
separatortoolitem: Implement snapshot()
Benjamin Otte [Sat, 17 Dec 2016 07:11:22 +0000 (08:11 +0100)]
levelbar: Implement snapshot()
Benjamin Otte [Sun, 18 Dec 2016 19:06:33 +0000 (20:06 +0100)]
frame: Remove the border node
It does weird clipping that
(a) nobody likes
(b) is hard to support in the new rendering world.
So we take the easy way out.
The actual frame is now drawn by the frame node around the label.
Benjamin Otte [Mon, 19 Dec 2016 04:18:53 +0000 (05:18 +0100)]
cellview: Remove code to modify the background
GtkCellView has a gadget, so peopl can do all their shenanigans with
CSS.
And the original use case (overriding the background so that the
cellview's GdkWindow shares the background color of the combobox) is
outdated since we have transparent backgrounds.
Marek Černocký [Sun, 18 Dec 2016 23:54:47 +0000 (00:54 +0100)]
Updated Czech translation
Debarshi Ray [Thu, 15 Dec 2016 12:17:57 +0000 (13:17 +0100)]
Mention that gdk_window_create_similar_image_surface inherits the scale
https://bugzilla.gnome.org/show_bug.cgi?id=776132
Matthias Clasen [Wed, 14 Dec 2016 14:55:55 +0000 (09:55 -0500)]
Make gtk4-icon-browser work
It was using no-longer-existing widgets and properties.
Alexander Larsson [Fri, 16 Dec 2016 11:35:03 +0000 (12:35 +0100)]
gdk: Drop gdk_window_reparent
We're not currently using this, and dropping it allows us to loose
a bunch of code which leads us towards the goal of having GdkWindow
only for toplevels (and reparenting makes not sense for toplevels).
Alexander Larsson [Thu, 15 Dec 2016 16:53:08 +0000 (17:53 +0100)]
gdk: Drop support for native (and thus foreign) subwindows
We can't really support these on e.g. wayland anyway, and we're trying
to get rid of subwindow at totally in the long term, so lets drop this.
It allows us to drop a lot of complexity.
Olivier Fourdan [Wed, 16 Nov 2016 14:05:43 +0000 (15:05 +0100)]
wayland: apply empty input shape on parent commit
For subsurfaces, the new state which includes the input shape is not
applied by the compositor if the subsurface is in effective synchronous
mode.
So we need to apply the input shape once parent surface is in effective
desynchronized mode, which is when it's committed, otherwise the input
shape may never be applied if the widget is not using being_paint() /
end_paint() to draw on its subsurface, like clutter does.
We do that only for empty input shape as those won't need update when
the subsurface is resized, for all other non-empty input shape, the
client still has to use begin_paint()/end_paint() for the input shape to
be applied.
https://bugzilla.gnome.org/show_bug.cgi?id=774534
Baurzhan Muftakhidinov [Wed, 14 Dec 2016 11:13:24 +0000 (11:13 +0000)]
Update Kazakh translation
Matthias Clasen [Sun, 11 Dec 2016 01:41:07 +0000 (20:41 -0500)]
Add a css parser test for border-spacing
Matthias Clasen [Sun, 11 Dec 2016 01:40:48 +0000 (20:40 -0500)]
Remove -gtk-gradient from css parser tests
It is not supported anymore.
Matthias Clasen [Sun, 11 Dec 2016 01:34:24 +0000 (20:34 -0500)]
Document the border-spacing CSS property
Benjamin Otte [Sat, 10 Dec 2016 03:32:19 +0000 (04:32 +0100)]
grid: Implement support for CSS border-spacing
Benjamin Otte [Sat, 10 Dec 2016 03:19:04 +0000 (04:19 +0100)]
boxgadget: Implement CSS border-spacing
Benjamin Otte [Sat, 10 Dec 2016 02:47:53 +0000 (03:47 +0100)]
box: Implement support for border-spacing
Benjamin Otte [Sat, 10 Dec 2016 02:28:05 +0000 (03:28 +0100)]
box: Remove unused member variable
Benjamin Otte [Sat, 10 Dec 2016 02:26:24 +0000 (03:26 +0100)]
css: Add "border-spacing" CSS property
It's using a GtkCssPositionValue, even though that name is wrong. But
the functionality of managing 2 lengths is exactly what we want.
Nobody is using this yet.
Matthias Clasen [Fri, 9 Dec 2016 20:51:25 +0000 (15:51 -0500)]
Use the new defines
It is no longer GDK_WINDOWING_VULKAN.
Benjamin Otte [Fri, 9 Dec 2016 20:38:35 +0000 (21:38 +0100)]
gtk: Remove unneeded gtk_snapshot_push()/pop() calls
Benjamin Otte [Fri, 9 Dec 2016 20:33:38 +0000 (21:33 +0100)]
snapshot: Always create an initial node
This way we ensure that there is only one root node and everybody can
append() with impunity.
Benjamin Otte [Fri, 9 Dec 2016 20:18:18 +0000 (21:18 +0100)]
gsk: Improve GSK_RENDERER env var handling
- Recognize "gl" as well as "opengl" for the GL renderer
- GSK_RENDERER=help now works
- g_warning() for an unrecognized renderer (typo detection!)
- g_print() the actual renderer that is used (and error messages when
selecting) when a GSK_RENDERER is given, so you'll notice if your
renderer isn't taken.
Benjamin Otte [Fri, 9 Dec 2016 20:17:27 +0000 (21:17 +0100)]
build: Don't try to detect vulkan library if the header wasn't found.
We've already failed. No need to fail again.
Matthias Clasen [Fri, 9 Dec 2016 19:59:46 +0000 (14:59 -0500)]
Trivial doc fixups
Benjamin Otte [Fri, 9 Dec 2016 19:21:18 +0000 (20:21 +0100)]
build: Make sure GTK compiles without Vulkan headers installed
Previously, code would work fine with --disable-vulkan if the Vulkan
headers were installed - code would happily just use them as they're
installed in /usr/include.
Matthias Clasen [Fri, 9 Dec 2016 19:22:14 +0000 (14:22 -0500)]
Forgotten file
Matthias Clasen [Fri, 9 Dec 2016 19:11:37 +0000 (14:11 -0500)]
Rename GDK_WINDOWING_VULKAN
The WINDOWING defines are only for GDK backends, really.
Define GDK_RENDERING_VULKAN instead.
Matthias Clasen [Fri, 9 Dec 2016 19:05:26 +0000 (14:05 -0500)]
Only include vulkan.h if we have it
Matthias Clasen [Fri, 9 Dec 2016 19:00:48 +0000 (14:00 -0500)]
Fix the configure check for Vulkan
GDK_WINDOWING_VULKAN was getting defined regardless of the tests.
Benjamin Otte [Fri, 9 Dec 2016 06:23:04 +0000 (07:23 +0100)]
vulkan: Implement texture caching
And with this change, the GPU looks bored again.
Benjamin Otte [Fri, 9 Dec 2016 05:13:14 +0000 (06:13 +0100)]
vulkan: Don't create more than one render object
By creating unlimited render objects, we would never wait on the GPU.
This would mean that if the GPU was the bottleneck, we would fill its
queue with render commands faster than it could process them.
And because the nvidia binary driver and my code work surprisingly well
and bugfree, this lead to exhaustion of RAM. I had 50GB of swap
configured and my hard disk was quicker as swap storage than my GPU was
at processing the commands, so stuff still filled up.
At that point my computer became rather unresponsive and I decided to
reboot it, so I that could write this patch.
Benjamin Otte [Fri, 9 Dec 2016 05:09:52 +0000 (06:09 +0100)]
vulkan: Don't limit number of descriptor sets
If we need more than we have reserved as maximum, recreate the
descriptor pool with a higher maximum.
Benjamin Otte [Fri, 9 Dec 2016 04:59:19 +0000 (05:59 +0100)]
vulkan: Add more node operations
Add SURFACE and TEXTURE operations. This way, we actually render more
than one node every frame because not everything is a fallback node
anymore that gets composited with its children into a cairo surface.
Benjamin Otte [Fri, 9 Dec 2016 04:53:04 +0000 (05:53 +0100)]
vulkan: Push the correct matrix when drawing
Instead of pushing the root matrix, push the world matrix for the
current node. That way, the bounds we emit as vertices are actually
properly transformed.
Benjamin Otte [Fri, 9 Dec 2016 04:51:51 +0000 (05:51 +0100)]
vulkan: Enable alpha blending
We will need that once we actually composite stuff.
Benjamin Otte [Fri, 9 Dec 2016 01:55:47 +0000 (02:55 +0100)]
vulkan: Redo descriptor set handling
First, we collect all the info about descriptor sets into a hash table,
then we use its size to determine the amount of sets and allocate those
before we finally go ahead and use the hash table's contents to
initialize the descriptor sets.
And then we're ready to render.
Benjamin Otte [Thu, 8 Dec 2016 23:06:59 +0000 (00:06 +0100)]
vulkan: Move remaining structs to VulkanRender object
It now gets to maintain things.
Benjamin Otte [Thu, 8 Dec 2016 21:35:16 +0000 (22:35 +0100)]
vulkan: Create framebuffers from GskVulkanRender object
Also create them on-demand, as they need to be created per-image and
per-framebuffer, so we don't want to create loads of them.
Benjamin Otte [Thu, 8 Dec 2016 20:14:41 +0000 (21:14 +0100)]
vulkan: Turn swapchain image targets into GskVulkanImages
This gives us proper refcounting here, too. And there's no longer a
difference between the different types of images.
Benjamin Otte [Thu, 8 Dec 2016 19:46:02 +0000 (20:46 +0100)]
vulkan: Store width/height of GskVulkanImage
This is to enable lazy framebuffer creation later.
Benjamin Otte [Thu, 8 Dec 2016 19:19:56 +0000 (20:19 +0100)]
vulkan: Turn GskVulkanImage into a GObject
This way, we can do real refcounting on them.
Benjamin Otte [Thu, 8 Dec 2016 19:05:53 +0000 (20:05 +0100)]
vulkan: Hook up image upload mechanism to env variables
Instead of having to decie at compile-time, check if
GSK_RENDERING=staging-image was given, and if so, select the staging
image upload mode.
Benjamin Otte [Thu, 8 Dec 2016 18:56:56 +0000 (19:56 +0100)]
vulkan: Don't wait until graphics are done computing
We can let the GPU do its stuff without waiting. The GPU knows what it's
doing.
Which means we now get a lot of time to spend on doing CPU things (read:
we're way better in benchmarks).
The old behavior is safer, so we want to keep it around for debugging.
It can be reenabled with GSK_RENDERING_MODE=sync.
Benjamin Otte [Thu, 8 Dec 2016 17:40:35 +0000 (18:40 +0100)]
vulkan: Keep render objects around
That way we can reuse them. We only create a new one if the last render
operation hasn't finished executing.
Benjamin Otte [Thu, 8 Dec 2016 17:03:05 +0000 (18:03 +0100)]
vulkan: Move command pool and fence into render object
Benjamin Otte [Thu, 8 Dec 2016 16:55:32 +0000 (17:55 +0100)]
vulkan: Make the GskVulkanRender struct private
Benjamin Otte [Thu, 8 Dec 2016 16:46:08 +0000 (17:46 +0100)]
vulkan: Make the VulkanRender object allocated
That way, we can have multiple of those and keep them around for reuse.
Benjamin Otte [Thu, 8 Dec 2016 16:40:07 +0000 (17:40 +0100)]
vulkan: Also wait on the draw semaphore when present()ing
That way we have a synchronization primitive at the start and at the
end.
Benjamin Otte [Thu, 8 Dec 2016 12:26:36 +0000 (13:26 +0100)]
vulkan: Add GskVulkanRenderPass
And move the actual rendering code there.
A RenderPass is a collection of operations on the same target that
get executed one after another. It roughly targets VkRenderPass or
rather the subpasses of a VkRenderPass.
For now, only the infrastructure is there. No real stuff is happening.
Benjamin Otte [Wed, 7 Dec 2016 13:50:52 +0000 (14:50 +0100)]
vulkan: Add GskVulkanRender object
This is refactoring work.
GskVulkanRender is supposed to be the global object for a render
operation, ie GskVulkanRenderer.render() will create this object for
what it does.
The object will be split into stages that perform the operations
necessary to create a drawing.
Benjamin Otte [Wed, 7 Dec 2016 00:48:31 +0000 (01:48 +0100)]
vulkan: Make MVP matrix available to vertex shader
We use push constants for this.
Benjamin Otte [Tue, 6 Dec 2016 22:29:38 +0000 (23:29 +0100)]
vulkan: Upload image data directly
Instead of using a staging iamge, we require the final image to be
linearly allocated and have host-visible memory.
This improves performance quite a bit.
The old code is still there and can be enabled with a simple change
to a #define in gskvulkanimage.h
Benjamin Otte [Tue, 6 Dec 2016 13:42:46 +0000 (14:42 +0100)]
vulkan: Make GskVulkanRenderer work
We now create a Cairo renderer, render to an image surface and upload
and retnder it with Vulkan.
Benjamin Otte [Mon, 5 Dec 2016 23:09:59 +0000 (00:09 +0100)]
xim: Use the native parent window for the X connection
Don't try to gdk_window_get_xid() on the current window.
Benjamin Otte [Mon, 5 Dec 2016 22:40:16 +0000 (23:40 +0100)]
x11: Don't make random windows native
Instead, complain if somebody calls gdk_x11_window_get_xid() on a
non-native window.
We cannot make random windows native anymore because there's no GSK
renderer associated with them, so we cannot draw them.
Benjamin Otte [Mon, 5 Dec 2016 22:07:56 +0000 (23:07 +0100)]
gsk: Pass texture coordinates to Vulkan renderer
We just render the coordinates as color, we don't do anything with them
yet.
Benjamin Otte [Mon, 5 Dec 2016 01:50:06 +0000 (02:50 +0100)]
gsk: Loads of work on Vulkan backend
We can now upload vertices.
And we use this to draw a yellow background. Which is clearly superior
to not drawing anything.
Also, we have shaders now. If you modify them, you need glslc installed
so they can be recompiled into Spir-V bytecode.
Benjamin Otte [Sun, 4 Dec 2016 17:10:18 +0000 (18:10 +0100)]
configure: Improve Vulkan detection
1. Output Vulkan status in summary
2. Add missing "test" call
3. Check for glslc
The glslc check will be necessary later for the code that automatically
compiles the Vulkan glsl source to Spir-V.
Nothing happens if glslc is not available - unless you modify the glsl.
Benjamin Otte [Thu, 1 Dec 2016 03:07:20 +0000 (04:07 +0100)]
vulkan: acquire/present images when drawing
Another step towards the final goal of actually showing something.
Benjamin Otte [Wed, 30 Nov 2016 02:59:28 +0000 (03:59 +0100)]
gskvulkan: Create render pass and command pool
Benjamin Otte [Wed, 30 Nov 2016 01:08:17 +0000 (02:08 +0100)]
gskvulkanrenderer: Create imagevies and framebuffers
Benjamin Otte [Wed, 30 Nov 2016 01:07:57 +0000 (02:07 +0100)]
gsk: Add a vulkan debug category
Benjamin Otte [Tue, 29 Nov 2016 23:54:48 +0000 (00:54 +0100)]
vulkan: Expose the swapchain images in public API
Benjamin Otte [Tue, 29 Nov 2016 15:33:14 +0000 (16:33 +0100)]
gsk: Add skeleton for Vulkan renderer
The renderer itself obviously doesn't do anything.
Benjamin Otte [Tue, 29 Nov 2016 15:29:19 +0000 (16:29 +0100)]
vulkan: Register debug handler
We now hook Vulkan error reporting into glib's error reporting.
I'm not sure on the severity handling yet, but we can fix that as we go
along.
Benjamin Otte [Tue, 29 Nov 2016 14:35:04 +0000 (15:35 +0100)]
gdk: Add GDK_VULKAN env variable
Also add 2 flags:
GDK_VULKAN="disable" will disable Vulkan usage.
GDK_VULKAN="validate" will enable VK_LAYER_LUNARG_standard_validation.
Benjamin Otte [Tue, 29 Nov 2016 13:47:59 +0000 (14:47 +0100)]
x11: Call gdk_display_sync() when creating Vulkan surfaces
The Vulkan driver wants to operate on an X Window that it is sure does
exist.
Benjamin Otte [Tue, 29 Nov 2016 02:20:31 +0000 (03:20 +0100)]
vulkan: More work on GdkVulkanContext
Code has now arrived at creation of swapchains.
Benjamin Otte [Mon, 28 Nov 2016 16:55:46 +0000 (17:55 +0100)]
vulkan: Turn GdkVulkanContext into a GdkDrawContext
Benjamin Otte [Mon, 28 Nov 2016 15:34:01 +0000 (16:34 +0100)]
vulkan: Add more infrastructure
gdk_window_create_vulkan_context() now exists and will return a Vulkan
context for the given window. It even initializes the surface. But it
doesn't do anything useful yet.
Benjamin Otte [Mon, 21 Nov 2016 13:18:43 +0000 (14:18 +0100)]
vulkan: Initial support
Adds the gdk_display_ref_vulkan() and gdk_display_unref_vulkan()
functions which setup/tear down VUlkan support for the display.
Nothing is using those functions yet.
Benjamin Otte [Mon, 21 Nov 2016 00:25:17 +0000 (01:25 +0100)]
build: Add Vulkan detection code
Also define GDK_WINDOWING_VULKAN if Vulkan is enabled.
Gianvito Cavasoli [Fri, 9 Dec 2016 10:34:45 +0000 (10:34 +0000)]
Update Italian translation
(cherry picked from commit
44fb5c9c704c39fad392ca45c6c2d74d6633a4e4)
William Hua [Thu, 8 Dec 2016 20:28:31 +0000 (15:28 -0500)]
mir: swap buffers on paint
Timm Bäder [Wed, 23 Nov 2016 16:46:44 +0000 (17:46 +0100)]
widget: Remove unused adjust_* vfuncs
Expose them privately to gtksizerequest.c using normal functions
instead.
Timm Bäder [Fri, 2 Dec 2016 12:20:47 +0000 (13:20 +0100)]
menu: Replace button-press-handler with gesture
Timm Bäder [Fri, 2 Dec 2016 11:39:46 +0000 (12:39 +0100)]
toolbar: Replace button-press-event handler with gesture
Timm Bäder [Fri, 2 Dec 2016 11:22:41 +0000 (12:22 +0100)]
linkbutton: Replace button-press-event handler with gesture